Serial data streams are typically transmitted over a single wire data bus. For a synchronous transmission, the first step required is extraction of a bit clock therefrom. In some systems, the bit clock itself is transmitted over a separate line or bus, such that the data reception is synchronized with respect to each clock edge associated with a bit. However, most data is transmitted in groups of bits, each group of bits constituting a single data word. Typically, a data word is eight bits long, which constitutes a byte, or nine bits long to accommodate some line coding or error correction overhead. Although the data is received in a synchronous manner, such that each bit can be recognized, it is still difficult to determine the byte boundary or frame boundary. This would require a separate frame clock.
In data storage devices, such as magnetic hard disks or CD ROMs, data must be extracted from the media, which is typically a mechanical spinning media, in a synchronous fashion. The method typically utilized to synchronize the overall operation of the system is to store at least one byte of synchronizing data at the beginning of each sector in the disk such that the serial data can be loaded into a serial shift register and the contents of that serial register compared in a parallel manner to a known sync word. When the data in the serial register matches the sync word, then this constitutes reception of the sync word and a frame boundary is defined.
One disadvantage to previous systems for detecting the presence of the sync words is that they required a template matching technique wherein a plurality of exclusive OR gates were required to make a comparison between each bit in the serial register and each bit of the sync word. This required a significant amount of circuitry to accomplish this decoding function.